;void inicializar_nodo(Nodo* nuevo, SDL_Surface *surfacePers, SDL_Surface *surfaceGen, Uint32 x, Uint32 y, Uint32 ID);

%include "nodo.mac"

global inicializar_nodo

%define p_nuevo [ebp + 8]
%define p_surfacePers [ebp + 12]
%define p_surfaceGen [ebp + 16]
%define coord_x [ebp + 20]
%define coord_y [ebp + 24]
%define ID [ebp + 28]

section .text

inicializar_nodo:
	push ebp
	mov ebp, esp
	push edi
	push esi
	push ebx
	
	mov eax, p_nuevo ; Muevo a eax el puntero al nuevo nodo.
	xor ebx, ebx ; Limpio ebx.
	mov ebx, ID ; Muevo a ebx el ID.
	mov [eax + off_ID], ebx ; Muevo al contenido del nuevo nodo en la posicion del ID, el ID que esta en ebx.
	
	xor ebx, ebx ; Limpio ebx.
	mov ebx, p_surfaceGen ; Muevo a ebx el surfaceGen que me pasan.
	mov [eax + off_p_surfaceGen], ebx ; Muevo al contenido del nuevo nodo en la posicion del surfaceGen, el surfaceGen que esta en ebx.
	
	xor ebx, ebx ; Limpio ebx.
	mov ebx, p_surfacePers ; Muevo a ebx el surfacePers que me pasan.
	mov [eax + off_p_surfacePers], ebx ; Muevo al contenido del nuevo nodo en la posicion del surfacePers, el surfacePers que esta en ebx.
	
	xor ebx, ebx ; Limpio ebx.
	mov ebx, coord_x ; Muevo a ebx la coord_x  que me pasan.
	mov [eax + off_coord_x], ebx ; Muevo al contenido del nuevo nodo en la posicion de la coord_x, la coord_x que esta en ebx.
	
	xor ebx, ebx ; Limpio ebx.
	mov ebx, coord_y ; Muevo a ebx la coord_y  que me pasan.
	mov [eax + off_coord_y], ebx ; Muevo al contenido del nuevo nodo en la posicion de la coord_y, la coord_y que esta en  ebx.
	
	xor ebx, ebx ; Limpio ebx.
	mov [eax + off_p_prox], ebx ; Muevo al contenido del nuevo nodo en la posicion del puntero al proximo el valor 0 (null) que esta en ebx.
	
	xor ebx, ebx ; Limpio ebx.
	mov [eax + off_p_prev], ebx ; Muevo al contenido del nuevo nodo en la posicion del puntero al anterior el valor 0 (null) que esta en ebx.
	
fin:
	pop ebx
	pop esi
	pop edi
	pop ebp
	ret
